using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Gencode.PrsCommon.Data.Abteilung;
using Gencode.PrsCommon.Data.Person;
using Gencode.PrsCommon.Data.Plan;

namespace Personalplaner
{
    [ToolboxItem(false)]
    public partial class AddPersonToPlan : UserControl, Gencode.Gengui.Forms.INewOKCancelDialog//Form
    {
        int planID;
        //PAddPerson person = null;
        DataView m_abteilungen;
        DataView m_personen;
        PersonTyp m_ptyp;

        public AddPersonToPlan(int planID)
        {
            InitializeComponent();
            this.planID = planID;

            Init();
        }

        public void Init()
        {
            checkBoxStamm.Checked = false;
            m_ptyp = PersonTyp.Zusatzperson;

            m_abteilungen = AbteilungData.GetAbteilungen(Verwaltung.Mandant, true);
            comboAbteilung.DataSource = m_abteilungen;
            comboAbteilung.DisplayMember = "name";

            m_personen = PersonData.GetPersonen(Verwaltung.Mandant, m_ptyp, true);
            comboPrs.DataSource = m_personen;
            comboPrs.DisplayMember = "anzeigename";
        }

		private bool saveData()
		{
			//check if person already exists in plan & abteilung...
			if (m_personen[comboPrs.SelectedIndex].Row["prsid"].ToString() != string.Empty)
				if (PlanData.CheckIfPersonExistsInPlan(int.Parse(m_personen[comboPrs.SelectedIndex].Row["prsid"].ToString()),
					int.Parse(m_abteilungen[comboAbteilung.SelectedIndex].Row["abteilungid"].ToString()),
					planID))
				{
					return false;
				}

			int prsid;
			//first row is empty for new person
			if (m_personen[comboPrs.SelectedIndex].Row["prsid"].ToString() == string.Empty)
			{
				//save new zusatzperson
				prsid = PersonData.SavePerson(txtVorname.Text, txtNachname.Text, "", "", "", "", "",
					"", "", "", "", "", 100, 0, PersonTyp.Zusatzperson, Verwaltung.Mandant);
			}
			else
				prsid = int.Parse(m_personen[comboPrs.SelectedIndex].Row["prsid"].ToString());

			//insert person into plan
			PlanData.SetAdditionalPersonInPlan(planID, prsid,
				int.Parse(m_abteilungen[comboAbteilung.SelectedIndex].Row["abteilungid"].ToString()));
			return true;
		}


        private void comboPrs_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtNachname.Text = m_personen[comboPrs.SelectedIndex].Row["nachname"].ToString();
            txtVorname.Text = m_personen[comboPrs.SelectedIndex].Row["vorname"].ToString();
        }


        private void checkBoxStamm_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxStamm.Checked)
                m_ptyp = PersonTyp.Alle;
            else
                m_ptyp = PersonTyp.Zusatzperson;

            m_personen = PersonData.GetPersonen(Verwaltung.Mandant, m_ptyp, true);
            comboPrs.DataSource = m_personen;
            comboPrs.DisplayMember = "anzeigename";
        }

        #region IDialogControl Member

        public void NewClicked()
        {
            comboPrs.SelectedIndex = 0;
        }

        public bool OKClicked()
        {
			if (txtVorname.Text != string.Empty && txtNachname.Text != string.Empty
				&& m_abteilungen[comboAbteilung.SelectedIndex].Row["abteilungid"].ToString() != string.Empty)
			{
				if (!saveData())
					return false;
				return true;
			}
			else
				return false;
        }

        public bool CancleClicked()
        {
            //Do nothing
            //just close
			return true;
        }

        #endregion
    }
}